package ar.edu.utn.frba.disenio;

import java.util.ArrayList;
import java.util.List;

public class Escalador {
	
	public static List<Vuelo> sinEscala(List<Asiento> asientos)
	{
		List<Vuelo> vuelosSinEscalas = new ArrayList<Vuelo>();
		
		for (Asiento asiento : asientos)
		{
			Vuelo vuelo = new Vuelo();
			vuelo.addAsiento(asiento);
			vuelosSinEscalas.add(vuelo);
		}
		
		return vuelosSinEscalas;
	}

	public static List<Vuelo> unaEscala(List<Asiento> vuelosOrigen,List<Asiento> vuelosDestino)
	{
		List<Vuelo> vuelosConUnaEscala = new ArrayList<Vuelo>();
		
		for (Asiento asiento : vuelosOrigen)
		{
			for (Asiento asiento2 : vuelosDestino)
			{
				if (asiento.getDestino().equals(asiento2.getOrigen()) 
						&& asiento.getLlegada().isBefore(asiento2.getSalida()))
				{
					Vuelo vuelo = new Vuelo();
					vuelo.addAsiento(asiento);
					vuelo.addAsiento(asiento2);
					vuelosConUnaEscala.add(vuelo);
				}
			}
		}
		
		return vuelosConUnaEscala;
		
	}
	
	public static List<Vuelo> dosEscalas(List<Asiento> vuelosOrigen,List<Asiento> vuelosIntermedios,List<Asiento> vuelosDestino)
	{
		List<Vuelo> vuelosConDosEscalas = new ArrayList<Vuelo>();
		
		for (Asiento asiento : vuelosOrigen)
		{
			for (Asiento asiento2 : vuelosIntermedios)
			{
				//asiento.getDestino().equals(asiento2.getOrigen()) && asiento.getLlegada().isBefore(asiento2.getSalida())
				for (Asiento asiento3 :vuelosDestino)
				{
					if ((asiento.getDestino().equals(asiento2.getOrigen()) && asiento2.getDestino().equals(asiento3.getOrigen()))
					&& (asiento.getLlegada().isBefore(asiento2.getSalida()) && asiento2.getLlegada().isBefore(asiento3.getSalida())))
					{
						Vuelo vuelo = new Vuelo();
						vuelo.addAsiento(asiento);
						vuelo.addAsiento(asiento2);
						vuelo.addAsiento(asiento3);
						vuelosConDosEscalas.add(vuelo);
					}
				}
			}
		}
		
		return vuelosConDosEscalas;
	}
	
}
